interface Todo {
    title: string;
    description: string;
  }
   
  function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
    return { ...todo, ...fieldsToUpdate };
  }
   
  const todo1 = {
    title: "organize desk",
    description: "clear clutter",
  };
   
  const todo2 = updateTodo(todo1, {
    description: "throw out trash",
    title:'adda',
  });
//   传入一个对象类型，得到一个新的对象类型，原对象类型的属性 设置成 可选属性 成为新对象类型的属性
//   Partial<Type> 等价于 
type das  ={
    a:number;
    b:string
}
type adsa = Partial<das> 
/* 
    adsa= {
        a?:number;
        b?:string
    }
*/
export {}

type partial<T> = {
  [k in keyof T] ?:T[k]
}